package com.cheetah.start.common.annotation;


import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 限流注解
 *
 * @author xjh
 * @date 2022/09/05
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimit {

    /**
     * 限流器名称，如果不设置，默认是类名加方法名。如果多个接口设置了同一个名称，那么使用同一个限流器
     *
     * @return
     */
    String name() default "";

    /**
     * ip限流
     *
     * @return boolean
     */
    boolean ipRate() default false;

    /**
     * 每秒允许通过的请求数 QPS
     *
     * @return
     */
    int permits() default 10000;

    /**
     * 获取令牌超时时间
     *
     * @return
     */
    int time() default 100;

    /**
     * 获取令牌超时时间单位
     *
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;


    /**
     * 允许超时
     *
     * @return boolean
     */
    boolean allowTimeOut() default false;
}
